/**
 * Copyright (C) 2025 pony working team
 * SPDX-License-Identifier: MulanPSL-2.0
 */

/* define to prevent recursive inclusion -------------------------------------*/
#ifndef __A_REGSET_H__
#define __A_REGSET_H__

/* includes (standard library, system) ---------------------------------------*/
#include <stdint.h>
/* includes (other library) --------------------------------------------------*/
/* includes (project) --------------------------------------------------------*/
/* includes (local) ----------------------------------------------------------*/

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* defines -------------------------------------------------------------------*/
/* typedefs ------------------------------------------------------------------*/

struct regset {
    uint32_t r4;
    uint32_t r5;
    uint32_t r6;
    uint32_t r7;
    uint32_t r8;
    uint32_t r9;
    uint32_t r10;
    uint32_t r11;
};

/* macro ---------------------------------------------------------------------*/
/* inlines -------------------------------------------------------------------*/

static inline void __regset_set_rv(struct regset *regset, int retval)
{
    return;
}

static inline void __regset_set_pc(struct regset *regset, uintptr_t pc)
{
    return;
}

static inline void __regset_set_lr(struct regset *regset, uintptr_t lr)
{
    return;
}

static inline uintptr_t __regset_get_pc(struct regset *regset)
{
    return 0;
}

static inline uintptr_t __regset_get_sp(struct regset *regset)
{
    return 0;
}

static inline void __regset_set_arg(struct regset *regset, unsigned int argn, uintptr_t arg)
{
    return;
}

static inline void __regset_init(struct regset *regset, char *stack)
{
    return;
}

static inline void __regset_set_user(struct regset *regset)
{
    return;
}

/* externs -------------------------------------------------------------------*/

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __A_REGSET_H__ */
